<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- saved from url=(0056)http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html -->
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><script src="./Dalvik opcodes_files/pgstat.js" type="text/javascript"></script>
  
  <title>Dalvik opcodes</title>
  <meta content="Gabor Paller" name="author">
</head>
<body style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" alink="#ee0000" link="#0000ee" vlink="#551a8b">
<h1 style="font-family: Arial; text-align: center;">Dalvik opcodes</h1>
<div style="text-align: center; font-family: Arial;">Author: <a href="http://pallergabor.uw.hu/">Gabor Paller</a><br>
</div>
<br>
<span style="font-family: Arial;">Vx values in the table denote a
Dalvik register. Depending on the instruction, 16, 256 or 64k registers
can be accessed. Operations on long and double values use two
registers, e.g. a double value addressed in the V0 register occupies
the V0 and V1 registers.<br>
<br>
Boolean values are stored as 1 for true and 0 for false. Operations on
booleans are translated into integer operations.<br>
<br>
All the examples are in hig-endian format, e.g. 0F00 0A00 is coded as</span>
<span style="font-family: Arial;">0F, 00, 0A, 00 sequence.<br>
<br>
Note there are no explanation/example at some instructions. This means
that I have not seen that instruction "in the wild" and its
presence/name is only known from <a href="http://code.google.com/android/reference/dalvik/bytecode/Opcodes.html">Android
opcode constant list</a>.<br>
</span><br style="font-family: Arial;">
<table style="text-align: left; width: 100%; font-family: Arial;" border="1" cellpadding="2" cellspacing="2">
  <tbody>
    <tr>
      <td style="vertical-align: top; text-align: center; font-weight: bold;">Opcode
(hex)<br>
      </td>
      <td style="vertical-align: top; text-align: center;"><span style="font-weight: bold;">Opcode name</span><br>
      </td>
      <td style="vertical-align: top; text-align: center;"><span style="font-weight: bold;">Explanation</span><br>
      </td>
      <td style="vertical-align: top; text-align: center;"><span style="font-weight: bold;">Example</span><br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">00<br>
      </td>
      <td style="vertical-align: top;">nop<br>
      </td>
      <td style="vertical-align: top;">No operation<br>
      </td>
      <td style="vertical-align: top;">0000 - nop <br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">01<br>
      </td>
      <td style="vertical-align: top;">move vx,vy<br>
      </td>
      <td style="vertical-align: top;">Moves the content of vy into vx.
Both registers must be in the first 256 register range.<br>
      </td>
      <td style="vertical-align: top;">0110 - move v0, v1<br>
Moves v1 into v0.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">02<br>
      </td>
      <td style="vertical-align: top;">move/from16 vx,vy<br>
      </td>
      <td style="vertical-align: top;">Moves the content of vy into vx.
vy may be in the 64k register range while vx is one of the first 256
registers.<br>
      </td>
      <td style="vertical-align: top;">0200 1900 - move/from16 v0, v25<br>
Moves v25 into v0.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">03<br>
      </td>
      <td style="vertical-align: top;">move/16<br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">04<br>
      </td>
      <td style="vertical-align: top;">move-wide <br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">05<br>
      </td>
      <td style="vertical-align: top;">move-wide/from16 vx,vy<br>
      </td>
      <td style="vertical-align: top;">Moves a long/double value from
vy to vx. vy may be in the 64k register range while wx is one of the
first 256 registers.<br>
      </td>
      <td style="vertical-align: top;">0516 0000 - move-wide/from16
v22, v0<br>
Moves v0 into v22.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">06<br>
      </td>
      <td style="vertical-align: top;">move-wide/16<br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">07<br>
      </td>
      <td style="vertical-align: top;">move-object vx,vy<br>
      </td>
      <td style="vertical-align: top;">Moves the object reference from
vy to vx.<br>
      </td>
      <td style="vertical-align: top;">0781 - move-object v1, v8<br>
Moves the object reference in v8 to v1.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">08<br>
      </td>
      <td style="vertical-align: top;">move-object/from16 vx,vy<br>
      </td>
      <td style="vertical-align: top;">Moves the object reference from
vy to vx, vy can address 64k registers and vx can address 256 registers.<br>
      </td>
      <td style="vertical-align: top;">0801 1500 - move-object/from16
v1, v21<br>
Move the object reference in v21 to v1.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">09<br>
      </td>
      <td style="vertical-align: top;">move-object/16<br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">0A<br>
      </td>
      <td style="vertical-align: top;">move-result vx<br>
      </td>
      <td style="vertical-align: top;">Move the result value of the
previous method invocation into vx.<br>
      </td>
      <td style="vertical-align: top;">0A00 - move-result v0<br>
Move the return value of a previous method invocation into v0.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">0B<br>
      </td>
      <td style="vertical-align: top;">move-result-wide vx<br>
      </td>
      <td style="vertical-align: top;">Move the long/double result
value of the previous method invocation into vx,vx+1.<br>
      </td>
      <td style="vertical-align: top;">0B02 - move-result-wide v2<br>
Move the long/double result value of the previous method invocation
into v2,v3.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">0C<br>
      </td>
      <td style="vertical-align: top;">move-result-object vx<br>
      </td>
      <td style="vertical-align: top;">Move the result object reference
of the previous method invocation into vx.<br>
      </td>
      <td style="vertical-align: top;">0C00 - move-result-object v0<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">0D<br>
      </td>
      <td style="vertical-align: top;">move-exception vx<br>
      </td>
      <td style="vertical-align: top;">Move the exception object
reference thrown during a method invocation into vx. <br>
      </td>
      <td style="vertical-align: top;">0D19 - move-exception v25<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">0E<br>
      </td>
      <td style="vertical-align: top;">return-void<br>
      </td>
      <td style="vertical-align: top;">Return without a return value<br>
      </td>
      <td style="vertical-align: top;">0E00 - return-void<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">0F<br>
      </td>
      <td style="vertical-align: top;">return vx<br>
      </td>
      <td style="vertical-align: top;">Return with vx return value<br>
      </td>
      <td style="vertical-align: top;">0F00 - return v0<br>
Returns with return value in v0.<br>
      <br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">10<br>
      </td>
      <td style="vertical-align: top;">return-wide vx<br>
      </td>
      <td style="vertical-align: top;">Return with double/long result
in vx,vx+1.<br>
      </td>
      <td style="vertical-align: top;">1000 - return-wide v0<br>
Returns with a double/long value in v0,v1.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">11<br>
      </td>
      <td style="vertical-align: top;">return-object vx<br>
      </td>
      <td style="vertical-align: top;">Return with vx object reference
value.<br>
      </td>
      <td style="vertical-align: top;">1100 - return-object v0<br>
Returns with object reference value in v0<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">12<br>
      </td>
      <td style="vertical-align: top;">const/4 vx,lit4<br>
      </td>
      <td style="vertical-align: top;">Puts the 4 bit constant into vx<br>
      </td>
      <td style="vertical-align: top;">1221 - const/4 v1, #int2<br>
Moves literal 2 into v1. The destination register is in the lower 4 bit
in the second byte, the literal 2 is in the higher 4 bit.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">13<br>
      </td>
      <td style="vertical-align: top;">const/16 vx,lit16<br>
      </td>
      <td style="vertical-align: top;">Puts the 16 bit constant into vx<br>
      </td>
      <td style="vertical-align: top;">1300 0A00 - const/16 v0, #int 10<br>
Puts the literal constant of 10 into v0.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">14<br>
      </td>
      <td style="vertical-align: top;">const vx, lit32<br>
      </td>
      <td style="vertical-align: top;">Puts the integer constant into vx<br>
      </td>
      <td style="vertical-align: top;">1400 4E61 BC00 - const v0,
#12345678 // #00BC614E<br>
Moves literal 12345678 into v0.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">15<br>
      </td>
      <td style="vertical-align: top;">const/high16 v0, lit16<br>
      </td>
      <td style="vertical-align: top;">Puts the 16 bit constant into
the topmost bits of the register. Used to initialize float values.<br>
      </td>
      <td style="vertical-align: top;">1500 2041 - const/high16 v0,
#float 10.0 // #41200000<br>
Moves the floating literal of 10.0 into v0. The 16 bit literal in the
instruction carries the top 16 bits of the floating point number.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">16<br>
      </td>
      <td style="vertical-align: top;">const-wide/16 vx, lit16<br>
      </td>
      <td style="vertical-align: top;">Puts the integer constant into
vx and vx+1 registers, expanding the integer constant into a long
constant..<br>
      </td>
      <td style="vertical-align: top;">1600 0A00 - const-wide/16 v0,
#long 10<br>
Moves literal 10 into v0 and v1 registers.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">17<br>
      </td>
      <td style="vertical-align: top;">const-wide/32 vx, lit32<br>
      </td>
      <td style="vertical-align: top;">Puts the 32 bit constant into vx
and vx+1 registers, expanding the integer constant into a long constant.<br>
      </td>
      <td style="vertical-align: top;">1702 4e61 bc00 - const-wide/32
v2, #long 12345678 // #00bc614e<br>
Puts #12345678 into v2 and v3 registers.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">18<br>
      </td>
      <td style="vertical-align: top;">const-wide vx, lit64<br>
      </td>
      <td style="vertical-align: top;">Puts the 64 bit constant into vx
and vx+1 registers.<br>
      </td>
      <td style="vertical-align: top;">1802 874b 6b5d 54dc 2b00-
const-wide v2, #long 12345678901234567 // #002bdc545d6b4b87<br>
Puts #12345678901234567 into v2 and v3 registers.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">19<br>
      </td>
      <td style="vertical-align: top;">const-wide/high16 vx,lit16<br>
      </td>
      <td style="vertical-align: top;">Puts the 16 bit constant into
the highest 16 bit of vx and vx+1 registers. Used to initialize double
values.<br>
      </td>
      <td style="vertical-align: top;">1900 2440 - const-wide/high16
v0, #double 10.0 // #402400000<br>
Puts the double constant of 10.0 into v0 register.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">1A<br>
      </td>
      <td style="vertical-align: top;">const-string vx,string_id<br>
      </td>
      <td style="vertical-align: top;">Puts reference to a string
constant identified by string_id into vx.<br>
      </td>
      <td style="vertical-align: top;">1A08 0000 - const-string v8, ""
// string@0000<br>
Puts reference to string@0000 (entry #0 in the string table) into v8.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">1B<br>
      </td>
      <td style="vertical-align: top;">const-string-jumbo<br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">1C<br>
      </td>
      <td style="vertical-align: top;">const-class vx,type_id<br>
      </td>
      <td style="vertical-align: top;">Moves the class object of a
class identified by type_id (e.g. Object.class) into vx.<br>
      </td>
      <td style="vertical-align: top;">1C00 0100 - const-class v0,
Test3 // type@0001<br>
Moves reference to Test3.class (entry#1 in the type id table) into <br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">1D<br>
      </td>
      <td style="vertical-align: top;">monitor-enter vx<br>
      </td>
      <td style="vertical-align: top;">Obtains the monitor of the
object referenced by vx.<br>
      </td>
      <td style="vertical-align: top;">1D03 - monitor-enter v3<br>
Obtains the monitor of the object referenced by v3.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">1E<br>
      </td>
      <td style="vertical-align: top;">monitor-exit<br>
      </td>
      <td style="vertical-align: top;">Releases the monitor of the
object referenced by vx.<br>
      </td>
      <td style="vertical-align: top;">1E03 - monitor-exit v3<br>
Releases the monitor of the object referenced by v3.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">1F<br>
      </td>
      <td style="vertical-align: top;">check-cast vx, type_id<br>
      </td>
      <td style="vertical-align: top;">Checks whether the object
reference in vx can be cast to an instance of a class referenced by
type_id. Throws ClassCastException if the cast is not possible,
continues execution otherwise.<br>
      </td>
      <td style="vertical-align: top;">1F04 0100 - check-cast v4, Test3
// type@0001<br>
Checks whether the object reference in v4 can be cast to type@0001
(entry #1 in the type id table)<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">20<br>
      </td>
      <td style="vertical-align: top;">instance-of vx,vy,type_id<br>
      </td>
      <td style="vertical-align: top;">Checks whether vy is instance of
a class identified by type_id. Sets vx non-zero if it is, 0 otherwise.<br>
      </td>
      <td style="vertical-align: top;">2040 0100 - instance-of v0, v4,
Test3 // type@0001<br>
Checks whether the object reference in v4 is an instance of type@0001
(entry #1 in the type id table). Sets v0 to non-zero if v4 is instance
of Test3, 0 otherwise.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">21<br>
      </td>
      <td style="vertical-align: top;">array-length vx,vy<br>
      </td>
      <td style="vertical-align: top;">Calculates the number of
elements of the array referenced by vy and puts the length value into
vx.<br>
      </td>
      <td style="vertical-align: top;">2111 - array-length v1, v1<br>
Calculates the number of elements of the array referenced by v1 and
puts the result into v1.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">22<br>
      </td>
      <td style="vertical-align: top;">new-instance vx,type<br>
      </td>
      <td style="vertical-align: top;">Instantiates an object type and
puts the reference of the newly created instance into vx.<br>
      </td>
      <td style="vertical-align: top;">2200 1500 - new-instance v0,
java.io.FileInputStream // type@0015<br>
Instantiates type@0015 (entry #15H in the type table) and puts its
reference into v0.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">23<br>
      </td>
      <td style="vertical-align: top;">new-array vx,vy,type_id<br>
      </td>
      <td style="vertical-align: top;">Generates a new array of type_id
type and vy element size and puts the reference to the array into vx.<br>
      </td>
      <td style="vertical-align: top;">2312 2500 - new-array v2, v1,
char[] // type@0025<br>
Generates a new array of type@0025 type and v1 size and puts the
reference to the new array into v2.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">24<br>
      </td>
      <td style="vertical-align: top;">filled-new-array
{parameters},type_id<br>
      </td>
      <td style="vertical-align: top;">Generates a new array of type_id
and fills it with the parameters<sup>5</sup>. Reference to the newly
generated array can be obtained by a move-result-object instruction,
immediately following the filled-new-array instruction.<br>
      </td>
      <td style="vertical-align: top;"> 2420 530D 0000 -
filled-new-array {v0,v0},[I // type@0D53<br>
Generates a new array of type@0D53. The array's size will be 2 and both
elements will be filled with the contents of v0 register.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">25<br>
      </td>
      <td style="vertical-align: top;">filled-new-array-range
{vx..vy},type_id<br>
      </td>
      <td style="vertical-align: top;">Generates a new array of type_id
and fills it with a range of parameters. Reference to the newly
generated array can be obtained by a
move-result-object instruction, immediately following the
filled-new-array instruction. </td>
      <td style="vertical-align: top;">2503 0600 1300 -
filled-new-array/range
{v19..v21}, [B // type@0006<br>
Generates a new array of type@0D53. The array's size will be 3 and the
elements will be filled using the v19,v20 and v21 registers<sup>4</sup>.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">26<br>
      </td>
      <td style="vertical-align: top;">fill-array-data
vx,array_data_offset<br>
      </td>
      <td style="vertical-align: top;">Fills the array referenced by vx
with the static data. The location of the static data is the sum
of&nbsp; the position of the current instruction and the offset<br>
      </td>
      <td style="vertical-align: top;">2606 2500 0000 - fill-array-data
v6, 00e6 // +0025<br>
Fills the array referenced by v0 with the static data at current
instruction+25H words location. The offset is expressed as a 32-bit
number. The static data is stored in the following format:<br>
0003 // Table type: static array data<br>
0400 // Byte per array element (in this case, 4 byte integers)<br>
0300 0000 // Number of elements in the table<br>
0100 0000&nbsp; // Element #0: integer 1<br>
0200 0000 // Element #1: integer 2<br>
0300 0000 // Element #2: integer3<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">27<br>
      </td>
      <td style="vertical-align: top;">throw vx<br>
      </td>
      <td style="vertical-align: top;">Throws an exception object. The
reference of the exception object is in vx.<br>
      </td>
      <td style="vertical-align: top;">2700 - throw v0<br>
Throws an exception. The exception object reference is in v0.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">28<br>
      </td>
      <td style="vertical-align: top;">goto target<br>
      </td>
      <td style="vertical-align: top;">Unconditional jump by short
offset<sup>2</sup>. <br>
      </td>
      <td style="vertical-align: top;">28F0 - goto 0005 // -0010<br>
Jumps to current position-16 words (hex 10). 0005 is the label of the
target instruction.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">29<br>
      </td>
      <td style="vertical-align: top;">goto/16 target<br>
      </td>
      <td style="vertical-align: top;">Unconditional jump by 16 bit
offset<sup>2</sup>.<br>
      </td>
      <td style="vertical-align: top;">2900 0FFE - goto/16 002f // -01f1<br>
Jumps to the current position-1F1H words. 002F is the label of the
target instruction.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">2A<br>
      </td>
      <td style="vertical-align: top;">goto/32 target<br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">2B<br>
      </td>
      <td style="vertical-align: top;">packed-switch vx,table<br>
      </td>
      <td style="vertical-align: top;">Implements a switch statement
where the case constants are close to each other. The instruction uses
an index table. vx indexes into this table to find the offset of the
instruction for a particular case. If vx falls out of the index table,
the execution continues on the next instruction (default case).<br>
      </td>
      <td style="vertical-align: top;">2B02 0C00 0000 - packed-switch
v2, 000c // +000c<br>
Execute a packed switch according to the switch argument in v2. The
position of the index table is at current instruction+0CH words. The
table looks like the following:<br>
0001 // Table type: packed switch table<br>
0300 // number of elements<br>
0000 0000 // element base<br>
0500 0000&nbsp; 0: 00000005 // case 0: +00000005<br>
0700 0000&nbsp; 1: 00000007 // case 1: +00000007<br>
0900 0000&nbsp; 2: 00000009 // case 2: +00000009<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">2C<br>
      </td>
      <td style="vertical-align: top;">sparse-switch vx,table<br>
      </td>
      <td style="vertical-align: top;">Implements a switch statement
with sparse case table. The instruction uses a lookup table with case
constants and offsets for each case constant. If there is no match in
the table, execution continues on the next instruction (default case).<br>
      </td>
      <td style="vertical-align: top;">2C02 0c00 0000 - sparse-switch
v2, 000c // +000c<br>
Execute a sparse switch according to the switch argument in v2. The
position of the lookup table is at current instruction+0CH words. The
table looks like the following.<br>
0002 // Table type: sparse switch table<br>
0300 // number of elements<br>
9cff ffff // first case: -100<br>
fa00 0000 // second case constant: 250<br>
e803 0000 // third case constant: 1000<br>
0500 0000 // offset for the first case constant: +5<br>
0700 0000 // offset for the second case constant: +7<br>
0900 0000 // offset for the third case constant: +9<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">2D<br>
      </td>
      <td style="vertical-align: top;">cmpl-float<br>
      </td>
      <td style="vertical-align: top;">Compares the float values in vy
and vz and sets the integer value in vx accordingly<sup>3</sup> </td>
      <td style="vertical-align: top;">2D00 0607 - cmpl-float v0, v6, v7<br>
Compares the float values in v6 and v7 then sets v0 accordingly. NaN
bias is less-than, the instruction will return -1 if any of the
parameters is NaN. </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">2E<br>
      </td>
      <td style="vertical-align: top;">cmpg-float vx, vy, vz<br>
      </td>
      <td style="vertical-align: top;">Compares the float values in vy
and vz and sets the integer value in vx accordingly<sup>3</sup>.</td>
      <td style="vertical-align: top;">2E00 0607 - cmpg-float v0, v6, v7<br>
Compares the float values in v6 and v7 then sets v0 accordingly. NaN
bias is greater-than, the instruction will return 1 if any of the
parameters is NaN. </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">2F<br>
      </td>
      <td style="vertical-align: top;">cmpl-double vx,vy,vz<br>
      </td>
      <td style="vertical-align: top;">Compares the double values in vy
and vz<sup>2</sup> and sets the integer value in vx accordingly<sup>3</sup>.
      </td>
      <td style="vertical-align: top;">2F19 0608 - cmpl-double v25, v6,
v8<br>
Compares the double values in v6,v7 and v8,v9 and sets v25 accordingly.
NaN bias is less-than, the instruction will return -1 if any of the
parameters is NaN. </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">30<br>
      </td>
      <td style="vertical-align: top;">cmpg-double vx, vy, vz<br>
      </td>
      <td style="vertical-align: top;">Compares the double values in vy
and vz<sup>2</sup> and sets the integer value in vx accordingly<sup>3</sup>.</td>
      <td style="vertical-align: top;">3000 080A - cmpg-double v0, v8,
v10<br>
Compares the double values in v8,v9 and v10,v11 then sets v0
accordingly. NaN bias is greater-than, the instruction will return 1 if
any of the parameters is NaN. </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">31<br>
      </td>
      <td style="vertical-align: top;">cmp-long vx, vy, vz<br>
      </td>
      <td style="vertical-align: top;">Compares the long values in vy
and vz and sets the integer value in vx accordingly<sup>3</sup>.<br>
      </td>
      <td style="vertical-align: top;">3100 0204 - cmp-long v0, v2, v4<br>
Compares the long values in v2 and v4 then sets v0 accordingly.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">32<br>
      </td>
      <td style="vertical-align: top;">if-eq vx,vy,target<br>
      </td>
      <td style="vertical-align: top;">Jumps to target if vx==vy<sup>2</sup>.
vx and vy are integer values.<br>
      </td>
      <td style="vertical-align: top;">32b3 6600 - if-eq v3, v11, 0080
// +0066<br>
Jumps to the current position+66H words if v3==v11. 0080 is the label
of the target instruction.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">33<br>
      </td>
      <td style="vertical-align: top;">if-ne vx,vy,target<br>
      </td>
      <td style="vertical-align: top;">Jumps to target if vx!=vy<sup>2</sup>.
vx and vy are integer values. </td>
      <td style="vertical-align: top;">33A3 1000 - if-ne v3, v10, 002c
// +0010<br>
Jumps to the current position+10H words if v3!=v10. 002c is the label
of the target instruction.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">34<br>
      </td>
      <td style="vertical-align: top;">if-lt vx,vy,target<br>
      </td>
      <td style="vertical-align: top;">Jumps to target is vx&lt;vy<sup>2</sup>.
vx and vy are integer values.<br>
      </td>
      <td style="vertical-align: top;">3432 CBFF - if-lt v2, v3, 0023
// -0035<br>
Jumps to the current position-35H words if v2&lt;v3. 0023 is the label
of the target instruction.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">35<br>
      </td>
      <td style="vertical-align: top;">if-ge vx, vy,target<br>
      </td>
      <td style="vertical-align: top;">Jumps to target if vx&gt;=vy<sup>2</sup>.
vx and vy are integer values.<br>
      </td>
      <td style="vertical-align: top;">3510 1B00 - if-ge v0, v1, 002b
//
+001b<br>
Jumps to the current position+1BH words if v0&gt;=v1. 002b is the label
of the target instruction.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">36<br>
      </td>
      <td style="vertical-align: top;">if-gt vx,vy,target<br>
      </td>
      <td style="vertical-align: top;">Jumps to target if vx&gt;vy<sup>2</sup>.
vx and vy are integer values.</td>
      <td style="vertical-align: top;">3610 1B00 - if-ge v0, v1, 002b
//
+001b<br>
Jumps to the current position+1BH words if v0&gt;v1. 002b is the label
of the target instruction.</td>
    </tr>
    <tr>
      <td style="vertical-align: top;">37<br>
      </td>
      <td style="vertical-align: top;">if-le vx,vy,target<br>
      </td>
      <td style="vertical-align: top;">Jumps to target if vx&lt;=vy<sup>2</sup>.
vx and vy are integer values. </td>
      <td style="vertical-align: top;">3756 0B00 - if-le v6, v5, 0144
// +000b<br>
Jumps to the current position+0BH words if v6&lt;=v5. 0144 is the label
of the target instruction.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">38<br>
      </td>
      <td style="vertical-align: top;">if-eqz vx,target<br>
      </td>
      <td style="vertical-align: top;">Jumps to target if vx==0<sup>2</sup>.
vx is an integer value.<br>
      </td>
      <td style="vertical-align: top;">3802 1900 - if-eqz v2, 0038 //
+0019<br>
Jumps to the current position+19H words if v2==0. 0038 is the label
of the target instruction.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">39<br>
      </td>
      <td style="vertical-align: top;">if-nez vx,target<br>
      </td>
      <td style="vertical-align: top;">Checks vx and jumps if vx is
nonzero<sup>2</sup>. <br>
      </td>
      <td style="vertical-align: top;">3902 1200 - if-nez v2, 0014 //
+0012<br>
Jumps to current position+18 words (hex 12) if v2 is nonzero. 0014 is
the label of the target instruction.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">3A<br>
      </td>
      <td style="vertical-align: top;">if-ltz vx,target<br>
      </td>
      <td style="vertical-align: top;">Checks vx and jumps if vx&lt;0<sup>2</sup>.
      </td>
      <td style="vertical-align: top;">3A00 1600 - if-ltz v0, 002d //
+0016<br>
Jumps to the current position+16H words if v0&lt;0. 002d is the label
of the target instruction. </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">3B<br>
      </td>
      <td style="vertical-align: top;">if-gez vx,target<br>
      </td>
      <td style="vertical-align: top;">Checks vx and jumps if vx&gt;=0<sup>2</sup>.<br>
      </td>
      <td style="vertical-align: top;">3B00 1600 - if-gez v0, 002d //
+0016<br>
Jumps to the current position+16H words if v0 &gt;=0. 002d is the label
of the target instruction.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">3C<br>
      </td>
      <td style="vertical-align: top;">if-gtz vx,target<br>
      </td>
      <td style="vertical-align: top;">Checks vx and jumps if vx&gt;0<sup>2</sup>.
      </td>
      <td style="vertical-align: top;">3C00 1D00 - if-gtz v0, 004a //
+001d<br>
Jumps to the current position+1DH words if v0&gt;0. 004A is the label
of the target instruction. </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">3D<br>
      </td>
      <td style="vertical-align: top;">if-lez vx,target<br>
      </td>
      <td style="vertical-align: top;">Checks vx and jumps if vx&lt;=0<sup>2</sup>.
      </td>
      <td style="vertical-align: top;">3D00 1D00 - if-lez v0, 004a //
+001d<br>
Jumps to the current position+1DH words if v0&lt;=0. 004A is the label
of the target instruction.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">3E<br>
      </td>
      <td style="vertical-align: top;">unused_3E<br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">3F<br>
      </td>
      <td style="vertical-align: top;">unused_3F<br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">40<br>
      </td>
      <td style="vertical-align: top;">unused_40<br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">41<br>
      </td>
      <td style="vertical-align: top;">unused_41<br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">42<br>
      </td>
      <td style="vertical-align: top;">unused_42<br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">43<br>
      </td>
      <td style="vertical-align: top;">unused_43<br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">44<br>
      </td>
      <td style="vertical-align: top;">aget vx,vy,vz<br>
      </td>
      <td style="vertical-align: top;">Gets an integer value of an
object reference array into vx. The array is referenced by vy and is
indexed by vz. </td>
      <td style="vertical-align: top;">4407 0306 - aget v7, v3, v6<br>
Gets an integer array element. The array is referenced by v3
and the element is indexed by v6. The element will be put into v7.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">45<br>
      </td>
      <td style="vertical-align: top;">aget-wide vx,vy,vz<br>
      </td>
      <td style="vertical-align: top;">Gets a long/double value of
long/double array into vx,vx+1. The array is referenced by vy and is
indexed by vz. </td>
      <td style="vertical-align: top;">4505 0104 - aget-wide v5, v1, v4<br>
Gets a long/double array element. The array is referenced by v1
and the element is indexed by v4. The element will be put into v5,v6.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">46<br>
      </td>
      <td style="vertical-align: top;">aget-object vx,vy,vz<br>
      </td>
      <td style="vertical-align: top;">Gets an object reference value
of an object reference array into vx. The array is referenced by vy
and is indexed by vz.<br>
      </td>
      <td style="vertical-align: top;">4602 0200 - aget-object v2, v2,
v0<br>
Gets an object reference array element. The array is referenced by v2
and the element is indexed by v0. The element will be put into v2.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">47<br>
      </td>
      <td style="vertical-align: top;">aget-boolean vx,vy,vz<br>
      </td>
      <td style="vertical-align: top;">Gets a boolean value
of a boolean array into vx. The array is referenced by vy
and is indexed by vz. </td>
      <td style="vertical-align: top;">4700 0001 - aget-boolean v0, v0,
v1 <br>
Gets a boolean array element. The array is referenced by v0
and the element is indexed by v1. The element will be put into v0. </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">48<br>
      </td>
      <td style="vertical-align: top;">aget-byte vx,vy,vz<br>
      </td>
      <td style="vertical-align: top;">Gets a byte value
of a byte array into vx. The array is referenced by vy
and is indexed by vz. </td>
      <td style="vertical-align: top;">4800 0001 - aget-byte v0, v0, v1<br>
Gets a byte array element. The array is referenced by v0
and the element is indexed by v1. The element will be put into v0.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">49<br>
      </td>
      <td style="vertical-align: top;">aget-char vx, vy,vz<br>
      </td>
      <td style="vertical-align: top;">Gets a char value&nbsp; of a
character array into vx. The
element is indexed by vz, the array object is referenced by vy </td>
      <td style="vertical-align: top;">4905 0003 - aget-char v5, v0, v3<br>
Gets a character array element. The array is referenced by v0 and the
element is indexed by v3. The element will be put into v5.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">4A<br>
      </td>
      <td style="vertical-align: top;">aget-short vx,vy,vz<br>
      </td>
      <td style="vertical-align: top;">Gets a short value&nbsp; of a
short array into vx. The
element is indexed by vz, the array object is referenced by vy. </td>
      <td style="vertical-align: top;">4A00 0001 - aget-short v0, v0, v1<br>
Gets a short array element. The array is referenced by v0 and the
element is indexed by v1. The element will be put into v0.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">4B<br>
      </td>
      <td style="vertical-align: top;">aput vx,vy,vz<br>
      </td>
      <td style="vertical-align: top;">Puts the integer value in vx
into an element of an integer array. The
element is indexed by vz, the array object is referenced by vy. </td>
      <td style="vertical-align: top;">4B00 0305 - aput v0, v3, v5<br>
Puts the integer value in v2 into an integer array
referenced by v0. The target array element is indexed by v1.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">4C<br>
      </td>
      <td style="vertical-align: top;">aput-wide vx,vy,vz<br>
      </td>
      <td style="vertical-align: top;">Puts the double/long value in
vx,vx+1 into a double/long array. The array is referenced by vy, the
element is indexed by vz.<br>
      </td>
      <td style="vertical-align: top;">4C05 0104 - aput-wide v5, v1, v4<br>
Puts the double/long value in v5,v6 into a double/long array
referenced by v1. The target array element is indexed by v4.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">4D<br>
      </td>
      <td style="vertical-align: top;">aput-object vx,vy,vz<br>
      </td>
      <td style="vertical-align: top;">Puts the object reference value
in vx into an element of an object reference array. The
element is indexed by vz, the array object is referenced by vy. </td>
      <td style="vertical-align: top;">4D02 0100 - aput-object v2, v1,
v0<br>
Puts the object reference value in v2 into an object reference array
referenced by v0. The target array element is indexed by v1.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">4E<br>
      </td>
      <td style="vertical-align: top;">aput-boolean vx,vy,vz<br>
      </td>
      <td style="vertical-align: top;">Puts the boolean value
in vx into an element of a boolean array. The
element is indexed by vz, the array object is referenced by vy. </td>
      <td style="vertical-align: top;">4E01 0002 - aput-boolean v1, v0,
v2<br>
Puts the boolean value in v1 into an object reference array
referenced by v0. The target array element is indexed by v2.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">4F<br>
      </td>
      <td style="vertical-align: top;">aput-byte vx,vy,vz<br>
      </td>
      <td style="vertical-align: top;">Puts the byte value
in vx into an element of a byte array. The
element is indexed by vz, the array object is referenced by vy. </td>
      <td style="vertical-align: top;">4F02 0001 - aput-byte v2, v0, v1<br>
Puts the boolean value in v2 into a byte array
referenced by v0. The target array element is indexed by v1.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">50<br>
      </td>
      <td style="vertical-align: top;">aput-char vx,vy,vz<br>
      </td>
      <td style="vertical-align: top;">Puts the char value in vx into
an element of a character array. The
element is indexed by vz, the array object is referenced by vy. </td>
      <td style="vertical-align: top;">5003 0001 - aput-char v3, v0, v1<br>
Puts the character value in v3 into a character array referenced by v0.
The target array element is indexed by v1. </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">51<br>
      </td>
      <td style="vertical-align: top;">aput-short vx,vy,vz<br>
      </td>
      <td style="vertical-align: top;">Puts the short value in vx into
an element of a short array. The
element is indexed by vz, the array object is referenced by vy. </td>
      <td style="vertical-align: top;">5102 0001 - aput-short v2, v0, v1<br>
Puts the short value in v2 into a character array referenced by v0.
The target array element is indexed by v1.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">52<br>
      </td>
      <td style="vertical-align: top;">iget vx, vy, field_id<br>
      </td>
      <td style="vertical-align: top;">Reads an instance field into vx.
The instance is referenced by vy.<br>
      </td>
      <td style="vertical-align: top;">5210 0300 - iget v0, v1,
Test2.i6:I // field@0003<br>
Reads field@0003 into v0 (entry #3 in the field id table). The instance
is referenced by v1.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">53<br>
      </td>
      <td style="vertical-align: top;">iget-wide vx,vy,field_id<br>
      </td>
      <td style="vertical-align: top;">Reads an instance field into vx<sup>1</sup>.
The instance is referenced by vy.<br>
      </td>
      <td style="vertical-align: top;">5320 0400 - iget-wide v0, v2,
Test2.l0:J // field@0004<br>
Reads field@0004 into v0 and v1 registers (entry #4 in the field id
table). The instance is referenced by v2.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">54<br>
      </td>
      <td style="vertical-align: top;">iget-object vx,vy,field_id<br>
      </td>
      <td style="vertical-align: top;">Reads an object reference
instance field into vx. The instance is referenced by vy.<br>
      </td>
      <td style="vertical-align: top;">iget-object v1, v2,
LineReader.fis:Ljava/io/FileInputStream; // field@0002<br>
Reads field@0002 into v1&nbsp; (entry #2 in the field id
table). The instance is referenced by v2.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">55<br>
      </td>
      <td style="vertical-align: top;">iget-boolean vx,vy,field_id<br>
      </td>
      <td style="vertical-align: top;">Reads a boolean instance field
into vx. The instance is referenced by vy.<br>
      </td>
      <td style="vertical-align: top;">55FC 0000 - iget-boolean v12,
v15, Test2.b0:Z // field@0000<br>
Reads the boolean field@0000 into v12 register (entry #0 in the field
id table). The instance is referenced by v15.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">56<br>
      </td>
      <td style="vertical-align: top;">iget-byte vx,vy,field_id<br>
      </td>
      <td style="vertical-align: top;">Reads a byte instance field
into vx. The instance is referenced by vy. </td>
      <td style="vertical-align: top;">5632 0100 - iget-byte v2, v3,
Test3.bi1:B // field@0001<br>
Reads the char field@0001 into v2 register (entry #1 in the field
id table). The instance is referenced by v3.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">57<br>
      </td>
      <td style="vertical-align: top;">iget-char vx,vy,field_id<br>
      </td>
      <td style="vertical-align: top;">Reads a char instance field
into vx. The instance is referenced by vy. </td>
      <td style="vertical-align: top;">5720 0300 - iget-char v0, v2,
Test3.ci1:C // field@0003<br>
Reads the char field@0003 into v0 register (entry #3 in the field
id table). The instance is referenced by v2.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">58<br>
      </td>
      <td style="vertical-align: top;">iget-short vx,vy,field_id<br>
      </td>
      <td style="vertical-align: top;">Reads a short instance field
into vx. The instance is referenced by vy. </td>
      <td style="vertical-align: top;">5830 0800 - iget-short v0, v3,
Test3.si1:S // field@0008<br>
Reads the short field@0008 into v0 register (entry #8 in the field
id table). The instance is referenced by v3.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">59<br>
      </td>
      <td style="vertical-align: top;">iput vx,vy, field_id<br>
      </td>
      <td style="vertical-align: top;">Puts vx into an instance field.
The instance is referenced by vy.<br>
      </td>
      <td style="vertical-align: top;">5920 0200 - iput v0,v2,
Test2.i6:I // field@0002<br>
Stores v0 into field@0002 (entry #2 in the field id table). The
instance is referenced by v2.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">5A<br>
      </td>
      <td style="vertical-align: top;">iput-wide vx,vy, field_id<br>
      </td>
      <td style="vertical-align: top;">Puts the wide value located in
vx and vx+1 registers into an instance field. The instance is
referenced by vy.<br>
      </td>
      <td style="vertical-align: top;">5A20 0000 - iput-wide v0,v2,
Test2.d0:D // field@0000 <br>
Stores the wide value in v0, v1 registers into field@0000 (entry #0 in
the field id table). The instance is referenced by v2.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">5B<br>
      </td>
      <td style="vertical-align: top;">iput-object vx,vy,field_id<br>
      </td>
      <td style="vertical-align: top;">Puts the object reference in vx
into an instance field. The instance is referenced by vy.<br>
      </td>
      <td style="vertical-align: top;">5B20 0000 - iput-object v0, v2,
LineReader.bis:Ljava/io/BufferedInputStream; // field@0000<br>
Stores the object reference in v0 into field@0000 (entry #0 in the
field table). The instance is referenced by v2.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">5C<br>
      </td>
      <td style="vertical-align: top;">iput-boolean vx,vy, field_id<br>
      </td>
      <td style="vertical-align: top;">Puts the boolean value located
in vx into an instance field. The instance is referenced by vy.<br>
      </td>
      <td style="vertical-align: top;">5C30 0000 - iput-boolean v0, v3,
Test2.b0:Z // field@0000<br>
Puts the boolean value in v0 into field@0000 (entry #0 in the field id
table). The instance is referenced by v3.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">5D<br>
      </td>
      <td style="vertical-align: top;">iput-byte vx,vy,field_id<br>
      </td>
      <td style="vertical-align: top;">Puts the byte value located
in vx into an instance field. The instance is referenced by vy. </td>
      <td style="vertical-align: top;">5D20 0100 - iput-byte v0, v2,
Test3.bi1:B // field@0001<br>
Puts the boolean value in v0 into field@0001 (entry #1 in the field id
table). The instance is referenced by v2.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">5E<br>
      </td>
      <td style="vertical-align: top;">iput-char vx,vy,field_id<br>
      </td>
      <td style="vertical-align: top;">Puts the char value located
in vx into an instance field. The instance is referenced by vy. </td>
      <td style="vertical-align: top;">5E20 0300 - iput-char v0, v2,
Test3.ci1:C // field@0003<br>
Puts the char value in v0 into field@0003 (entry #3 in the field id
table). The instance is referenced by v2.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">5F<br>
      </td>
      <td style="vertical-align: top;">iput-short vx,vy,field_id<br>
      </td>
      <td style="vertical-align: top;">Puts the short value located
in vx into an instance field. The instance is referenced by vy. </td>
      <td style="vertical-align: top;">5F21 0800 - iput-short v1, v2,
Test3.si1:S // field@0008<br>
Puts the short value in v1 into field@0008 (entry #8 in the field id
table). The instance is referenced by v2.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">60<br>
      </td>
      <td style="vertical-align: top;">sget vx,field_id<br>
      </td>
      <td style="vertical-align: top;">Reads the integer field
identified by the field_id into vx. </td>
      <td style="vertical-align: top;">6000 0700 - sget v0, Test3.is1:I
// field@0007<br>
Reads field@0007 (entry #7 in the field id table) into v0.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">61<br>
      </td>
      <td style="vertical-align: top;">sget-wide vx, field_id<br>
      </td>
      <td style="vertical-align: top;">Reads the static field
identified by the field_id into vx and vx+1 registers.<br>
      </td>
      <td style="vertical-align: top;">6100 0500 - sget-wide v0,
Test2.l1:J // field@0005<br>
Reads field@0005 (entry #5 in the field id table) into v0 and v1
registers.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">62<br>
      </td>
      <td style="vertical-align: top;">sget-object vx,field_id<br>
      </td>
      <td style="vertical-align: top;">Reads the object reference field
identified by the field_id into vx. </td>
      <td style="vertical-align: top;">6201 0C00 - sget-object v1,
Test3.os1:Ljava/lang/Object; // field@000c<br>
Reads field@000c (entry #CH in the field id table) into v1.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">63<br>
      </td>
      <td style="vertical-align: top;">sget-boolean vx,field_id<br>
      </td>
      <td style="vertical-align: top;">Reads the boolean static field
identified by the field_id into vx.</td>
      <td style="vertical-align: top;">6300 0C00 - sget-boolean v0,
Test2.sb:Z // field@000c<br>
Reads boolean field@000c (entry #12 in the field id table) into v0.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">64<br>
      </td>
      <td style="vertical-align: top;">sget-byte vx,field_id<br>
      </td>
      <td style="vertical-align: top;">Reads the byte static field
identified by the field_id into vx. </td>
      <td style="vertical-align: top;">6400 0200 - sget-byte v0,
Test3.bs1:B // field@0002<br>
Reads byte field@0002 (entry #2 in the field id table) into v0.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">65<br>
      </td>
      <td style="vertical-align: top;">sget-char vx,field_id<br>
      </td>
      <td style="vertical-align: top;">Reads the char static field
identified by the field_id into vx. </td>
      <td style="vertical-align: top;">6500 0700 - sget-char v0,
Test3.cs1:C // field@0007<br>
Reads byte field@0007 (entry #7 in the field id table) into v0.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">66<br>
      </td>
      <td style="vertical-align: top;">sget-short vx,field_id<br>
      </td>
      <td style="vertical-align: top;">Reads the short static field
identified by the field_id into vx. </td>
      <td style="vertical-align: top;">6600 0B00 - sget-short v0,
Test3.ss1:S // field@000b<br>
Reads short field@000b (entry #BH in the field id table) into v0.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">67<br>
      </td>
      <td style="vertical-align: top;">sput vx, field_id<br>
      </td>
      <td style="vertical-align: top;">Puts vx into a static field.<br>
      </td>
      <td style="vertical-align: top;">6700 0100 - sput v0, Test2.i5:I
// field@0001<br>
Stores v0 into field@0001 (entry #1 in the field id table).<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">68<br>
      </td>
      <td style="vertical-align: top;">sput-wide vx, field_id<br>
      </td>
      <td style="vertical-align: top;">Puts vx and vx+1 into a static
field.<br>
      </td>
      <td style="vertical-align: top;">6800 0500 - sput-wide v0,
Test2.l1:J // field@0005<br>
Puts the long value in v0 and v1 into the field@0005 static field
(entry #5 in the field id table).<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">69<br>
      </td>
      <td style="vertical-align: top;">sput-object vx,field_id<br>
      </td>
      <td style="vertical-align: top;">Puts object reference in vx into
a static field. </td>
      <td style="vertical-align: top;">6900 0c00 - sput-object v0,
Test3.os1:Ljava/lang/Object; // field@000c<br>
Puts the object reference value in v0 into the field@000c static field
(entry #CH in the field id table).<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">6A<br>
      </td>
      <td style="vertical-align: top;">sput-boolean vx,field_id<br>
      </td>
      <td style="vertical-align: top;">Puts boolean value in vx into a
static field. </td>
      <td style="vertical-align: top;">6A00 0300 - sput-boolean v0,
Test3.bls1:Z // field@0003<br>
Puts the byte value in v0 into the field@0003 static field
(entry #3 in the field id table).<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">6B<br>
      </td>
      <td style="vertical-align: top;">sput-byte vx,field_id<br>
      </td>
      <td style="vertical-align: top;">Puts byte value in vx into a
static field. </td>
      <td style="vertical-align: top;">6B00 0200 - sput-byte v0,
Test3.bs1:B // field@0002<br>
Puts the byte value in v0 into the field@0002 static field
(entry #2 in the field id table).<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">6C<br>
      </td>
      <td style="vertical-align: top;">sput-char vx,field_id<br>
      </td>
      <td style="vertical-align: top;">Puts char value in vx into a
static field. </td>
      <td style="vertical-align: top;">6C01 0700 - sput-char v1,
Test3.cs1:C // field@0007<br>
Puts the char value in v1 into the field@0007 static field
(entry #7 in the field id table).<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">6D<br>
      </td>
      <td style="vertical-align: top;">sput-short vx,field_id<br>
      </td>
      <td style="vertical-align: top;">Puts short value in vx into a
static field. </td>
      <td style="vertical-align: top;">6D00 0B00 - sput-short v0,
Test3.ss1:S // field@000b<br>
Puts the short value in v0 into the field@000b static field
(entry #BH in the field id table).<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">6E<br>
      </td>
      <td style="vertical-align: top;">invoke-virtual { parameters },
methodtocall<br>
      </td>
      <td style="vertical-align: top;">Invokes a virtual method with
parameters.<br>
      </td>
      <td style="vertical-align: top;">6E53 0600 0421 - invoke-virtual
{ v4, v0, v1, v2, v3}, Test2.method5:(IIII)V // method@0006<br>
Invokes the 6th method in the method table with the following
arguments: v4 is the "this" instance, v0, v1, v2, and v3 are the method
parameters. The method has 5 arguments (4 MSB bits of the second byte)<sup>5</sup>.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">6F<br>
      </td>
      <td style="vertical-align: top;">invoke-super
{parameter},methodtocall<br>
      </td>
      <td style="vertical-align: top;">Invokes the virtual method of
the immediate parent class. </td>
      <td style="vertical-align: top;">6F10 A601 0100 invoke-super
{v1},java.io.FilterOutputStream.close:()V // method@01a6<br>
Invokes method@01a6 with one parameter, v1.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">70<br>
      </td>
      <td style="vertical-align: top;">invoke-direct { parameters },
methodtocall<br>
      </td>
      <td style="vertical-align: top;">Invokes a method with parameters
without the virtual method resolution.<br>
      </td>
      <td style="vertical-align: top;">7010 0800 0100 - invoke-direct
{v1}, java.lang.Object.&lt;init&gt;:()V // method@0008<br>
Invokes the 8th method in the method table with just one parameter, v1
is the "this" instance<sup>5</sup>.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">71<br>
      </td>
      <td style="vertical-align: top;">invoke-static {parameters},
methodtocall<br>
      </td>
      <td style="vertical-align: top;">Invokes a static method with
parameters.<br>
      </td>
      <td style="vertical-align: top;">7110 3400 0400 - invoke-static
{v4}, java.lang.Integer.parseInt:( Ljava/lang/String;)I // method@0034<br>
Invokes method@34 static method. The method is called with one
parameter, v4<sup>5</sup>.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">72<br>
      </td>
      <td style="vertical-align: top;">invoke-interface
{parameters},methodtocall<br>
      </td>
      <td style="vertical-align: top;">Invokes an interface method.<br>
      </td>
      <td style="vertical-align: top;">7240 2102 3154 invoke-interface
{v1, v3, v4, v5}, mwfw.IReceivingProtocolAdapter.receivePackage:(<br>
ILjava/lang/String;Ljava/io/InputStream;)Z // method@0221<br>
Invokes method@221 interface method using parameters in v1,v3,v4 and v5<sup>5</sup>.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">73<br>
      </td>
      <td style="vertical-align: top;">unused_73<br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">74<br>
      </td>
      <td style="vertical-align: top;">invoke-virtual/range
{vx..vy},methodtocall<br>
      </td>
      <td style="vertical-align: top;">Invokes virtual method with a
range of registers. The instruction
specifies the first register and the number of registers to be passed
to the method. </td>
      <td style="vertical-align: top;">7403 0600 1300 - invoke-virtual
{v19..v21}, Test2.method5:(IIII)V // method@0006<br>
Invokes the 6th method in the method table with the following
arguments: v19 is the "this" instance, v20 and v21 are the method
parameters.&nbsp; </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">75<br>
      </td>
      <td style="vertical-align: top;">invoke-super/range<br>
      </td>
      <td style="vertical-align: top;">Invokes&nbsp; the virtual method
of the immediate parent class. The instruction specifies the first
register and the number of registers to be passed to the method. </td>
      <td style="vertical-align: top;">7501 A601 0100 invoke-super
{v1},java.io.FilterOutputStream.close:()V // method@01a6<br>
Invokes method@01a6 with one parameter, v1. </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">76<br>
      </td>
      <td style="vertical-align: top;">invoke-direct/range
{vx..vy},methodtocall<br>
      </td>
      <td style="vertical-align: top;">Invokes direct method with a
range of registers. The instruction specifies the first register and
the number of registers to be passed to the method.<br>
      </td>
      <td style="vertical-align: top;">7603 3A00 1300 -
invoke-direct/range {v19..21},java.lang.Object.&lt;init&gt;:()V //
method@003a<br>
Invokes method@3A with 1 parameters (second byte of the
instruction=03). The parameter is stored in v19 (5th,6th bytes of the
instruction).<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">77<br>
      </td>
      <td style="vertical-align: top;">invoke-static/range
{vx..vy},methodtocall<br>
      </td>
      <td style="vertical-align: top;">Invokes static method with a
range of registers. The instruction
specifies the first register and the number of registers to be passed
to the method. </td>
      <td style="vertical-align: top;">7703 3A00 1300 -
invoke-static/range {v19..21},java.lang.Integer.parseInt:(
Ljava/lang/String;)I // method@0034<br>
Invokes method@3A with 1 parameters (second byte of the
instruction=03). The parameter is stored in v19 (5th,6th bytes of the
instruction). </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">78<br>
      </td>
      <td style="vertical-align: top;">invoke-interface-range<br>
      </td>
      <td style="vertical-align: top;">Invokes an interface method with
a range of registers. The instruction
specifies the first register and the number of registers to be passed
to the method. </td>
      <td style="vertical-align: top;">7840 2102 0100 invoke-interface
{v1..v4}, mwfw.IReceivingProtocolAdapter.receivePackage:(<br>
ILjava/lang/String;Ljava/io/InputStream;)Z // method@0221<br>
Invokes method@221 interface method using parameters in v1..v4. </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">79<br>
      </td>
      <td style="vertical-align: top;">unused_79<br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">7A<br>
      </td>
      <td style="vertical-align: top;">unused_7A<br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">7B<br>
      </td>
      <td style="vertical-align: top;">neg-int vx,vy<br>
      </td>
      <td style="vertical-align: top;">Calculates vx=-vy.<br>
      </td>
      <td style="vertical-align: top;">7B01 - neg-int v1,v0<br>
Calculates -v0 and stores the result in v1.<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">7C<br>
      </td>
      <td style="vertical-align: top;">not-int vx,vy<br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">7D<br>
      </td>
      <td style="vertical-align: top;">neg-long vx,vy<br>
      </td>
      <td style="vertical-align: top;">Calculates vx,vx+1=-(vy,vy+1) <br>
      </td>
      <td style="vertical-align: top;">7D02 - neg-long v2,v0<br>
Calculates -(v0,v1) and stores the result into (v2,v3)<br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">7E<br>
      </td>
      <td style="vertical-align: top;">not-long vx,vy<br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
      <td style="vertical-align: top;"><br>
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">7F<br>
      </td>
      <td style="vertical-align: top;">neg-float vx,vy<br>
      </td>
      <td style="vertical-align: top;">Calculates vx=-vy<br>
      </td>
      <td style="vertical-align: top;">7F01 - neg-float v1,v0<br>
Calculates -v0 and stores the result into v1.<br>
   </td></tr></tbody></table></body></html>